﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace AcademiaInteligenteData.DAL
{
    class DaoAmbiente : DaoConnection
    {
        public void InserirAmbiente(Ambiente ambiente)
        {
            string insertAmbiente = "ai_sp_inserirAmbiente";
            List<SqlParameter> parametros = new List<SqlParameter>();

            parametros.Add(new SqlParameter("@id", ambiente.Id));
            parametros[0].Direction = System.Data.ParameterDirection.InputOutput;
            parametros.Add(new SqlParameter("@descricao", ambiente.Descricao));
            parametros.Add(new SqlParameter("@id_academia", ambiente.Academia.Id));
            Executar(insertAmbiente, true, parametros);
            ambiente.Id = Convert.ToInt32(parametros[0].Value);
        }
        public void AlterarAmbiente(Ambiente ambiente)
        {
            string alterarAmbiente = "ai_sp_alterarAmbiente";
            List<SqlParameter> parametros = new List<SqlParameter>();

            parametros.Add(new SqlParameter("@id", ambiente.Id));
            parametros.Add(new SqlParameter("@descricao", ambiente.Descricao));
            parametros.Add(new SqlParameter("@id_academia", ambiente.Academia.Id));
            Executar(alterarAmbiente, true, parametros);
        }
        public void ExcluirAmbientePorID(int id)
        {
            string excluirAmbiente = "ai_sp_excluirAmbiente";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            Executar(excluirAmbiente, true, parametros);
        }
        public Ambiente SelecionarAmbientePorID(int id)
        {
            string selecionaAmbiente = "ai_sp_selecionarAmbientePorID";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            DataSet reader = Selecionar(selecionaAmbiente, true, parametros);
            int i = 0;
            Ambiente ambiente = new Ambiente();
            ambiente.Descricao = Convert.ToString(reader.Tables[0].Rows[i]["descricao"]);
            ambiente.Academia.Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]);
            ambiente.Id = id;
            return ambiente;
        }

        public List<Ambiente> SelecionarAmbientes()
        {
            string selecionaAmbiente = "ai_sp_listarAmbiente";
            List<SqlParameter> parametros = new List<SqlParameter>();
            DataSet reader = Selecionar(selecionaAmbiente, true, parametros);
            List<Ambiente> ambientes = new List<Ambiente>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                Ambiente ambiente = new Ambiente();
                ambiente.Academia.Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]);
                ambiente.Descricao = Convert.ToString(reader.Tables[0].Rows[i]["descricao"]);
                ambiente.Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id"]);
                ambientes.Add(ambiente);
            }
            return ambientes;
        }

        internal List<Ambiente> SelecionarAmbientePorAcademia(int idAcademia, int idEvento = 0)
        {
            string selecionaAmbiente = "ai_sp_selecionarAmbientePorAcademia";            
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id_academia", idAcademia));
            parametros.Add(new SqlParameter("@id_evento", idEvento));
            DataSet reader = Selecionar(selecionaAmbiente, true, parametros);
            List<Ambiente> ambientes = new List<Ambiente>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                Ambiente ambiente = new Ambiente();
                ambiente.Academia.Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]);
                ambiente.Descricao = Convert.ToString(reader.Tables[0].Rows[i]["descricao"]);
                ambiente.Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id"]);
                if(reader.Tables[0].Rows[i]["id_evento"]!=DBNull.Value)
                    ambiente.Evento.Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_evento"]);
                ambientes.Add(ambiente);
            }
            return ambientes;
        }
    }
}
